package com.csun.cmny.provider.service;

import com.csun.cmny.base.dto.LoginAuthDto;
import com.csun.cmny.core.support.IService;
import com.csun.cmny.provider.model.domain.DmcSleepCareBind;
import com.csun.cmny.provider.model.dto.csunsleep.BindCsunSleepDto;
import com.csun.cmny.provider.model.dto.propertyManagement.SelectDeviceDataDto;
import com.csun.cmny.provider.model.dto.sleep.BedOldmanSleepReqDto;
import com.csun.cmny.provider.model.dto.sleepcare.BindSleepCareDto;
import com.csun.cmny.provider.model.dto.sleepcare.SleepCarePageQuery;
import com.csun.cmny.provider.model.vo.DmcSleepCareVo;
import com.csun.cmny.provider.model.vo.SleepCareDataReqVo;
import com.csun.cmny.provider.model.vo.csunsleep.DmcCsunSleepVo;
import com.csun.cmny.provider.model.vo.propertyManagement.PropertyDataVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * @Auther: chisj chisj@foxmal.com
 * @Date: 2019-02-13 15:06
 * @Description: the interface dmc sleep care bind service
 */
public interface DmcSleepCareBindService extends IService<DmcSleepCareBind> {

    /**
     * query group sleep care list with page
     *
     * @param sleepCarePageQuery    sleep care page query
     *
     * @return  the page info.
     */
    PageInfo queryGroupSleepCareListWithPage(SleepCarePageQuery sleepCarePageQuery);

    /**
     * bind sleep care
     *
     * @param bindSleepCareDto  bind sleep care dto
     * @param loginAuthDto      login auth dto
     *
     * @return  the int.
     */
    Integer bindSleepCare(BindSleepCareDto bindSleepCareDto, LoginAuthDto loginAuthDto);

    /**
     * break sleep care
     *
     * @param deviceId  device id
     *
     * @return  the int.
     */
    Integer breakSleepCare(Long deviceId);

    /**
     * query sleep care bind list all
     *
     * @return  the list
     */
    List<DmcSleepCareVo> querySleepCareBindListAll();

    /**
     * get sleep care bind by device id
     *
     * @param deviceId  device id
     *
     * @return  dmc sleep care vo
     */
    DmcSleepCareVo getSleepCareBindByDeviceId(Long deviceId);

    /**
     * get sleep care bind by device no
     *
     * @param deviceNo  device no
     *
     * @return dmc csun sleep vo
     */
    DmcSleepCareVo getSleepCareBindByDeviceNo(String deviceNo);

    /**
     * get sleep care bind by oldman id
     *
     * @param oldmanId  oldman id
     *
     * @return  dmc csun sleep vo
     */
    DmcSleepCareVo getSleepCareBindByOldmanId(Integer oldmanId);

    /**
     * query sleep care data by bed oldman list
     *
     * @param bedOldmanSleepReqDtoList  bed oldman sleep req dto list
     *
     * @return
     */
    List<SleepCareDataReqVo> querySleepCareDataByBedOldmanList(List<BedOldmanSleepReqDto> bedOldmanSleepReqDtoList);

    List<PropertyDataVo> selectDeviceData(SelectDeviceDataDto selectDeviceDataDto);
}
